GH-137573: Check C stack depth before stack allocating JIT optimizer struct#137676
GH-137573: Check C stack depth before stack allocating JIT optimizer struct#137676markshannon wants to merge 4 commits intopython:mainfrom
Conversation
|
Just so I'm clear: you plan to move this to the thread state later but only on main right? So that we don't change the struct layout in an rc for 3.14? |
Co-authored-by: Adam Turner <9087854+AA-Turner@users.noreply.github.com>
|
Can you please add a |
Yes, but not in this PR as it seems unrelated |
Yes, that's the plan. |
| OPT_STAT_INC(optimizer_attempts); | ||
| /* Make sure we have enough C stack space for the optimizer */ | ||
| int margin = 1 + sizeof(JitOptContext)/_PyOS_STACK_MARGIN_BYTES; | ||
| if (_Py_ReachedRecursionLimitWithMargin(_PyThreadState_GET(), margin)) { |
There was a problem hiding this comment.
To work properly, the optimize_uops function or this function must be marked Py_NO_INLINE as well.
Otherwise, the compiler can just inline the functions and hoist the alloca above the check, making the check useless.
|
We've already started moving the buffers to the heap, so this won't be needed. |
Uh oh!
There was an error while loading. Please reload this page.